/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Application.Elements;
/**
 * Gombot megvalosito osztaly.
 * Nem lehet bemenete.
 * @author Stikmann
 */
public class BTN extends Element{
    /**
     * Ebben a valtozóban taroljuk a konstruktorban megadott alap erteket a 
     * gombnak. Ez a reset() metodushivashoz szukseges.
     */
    private boolean originalValue;

    /**
     * Változott-e a kimenet a legutóbbi simulate() óta.
     */
    private boolean changed;

    /**
     * Ezzel a konstruktoral a gombnak lehet alaperteket adni, amire reset()-kor all.
     * @param defaultvalue Az alapertek
     */
    public BTN(boolean defaultvalue){
        originalValue = defaultvalue;
    }

    /**
     * A gomb mindig elore adott erteket ugyan ki, de a valtozast nyomon kell
     * kovetni. Ha a legutobbi simulate ota valtozott a gomb erteke, vissza
     * kell adni.
     * @return Ha valtozott a kimenet, true, egyebkent false
     */
    public boolean simulate(){
        if(changed){
            changed=false;
            return true;
        }
        else
            return false;
    }

    /**
     * Leellenorzi az elemet. Egy gombnak nem lehet bemenete, ha megis van, hibat
     * ad vissza.
     * @return Ha nincs hiba, null, ha van, a hibauzenet.
     */
    @Override
    public String check(){
        if (!inputs.isEmpty())
            return "Gombnak nem lehet bemenete.";
        else
            return null;
    }

    /**
     * Alapertekere (amit a konstruktorban adtunk allitja a gomb kimenetet.
     */
    @Override
    public void reset(){
        out=originalValue;
        changed=true;
    }

    /**
     * Beallitja a gomb kimenetet
     * @param mire A kivant kimenet
     */
    public void setErtek(boolean mire){
        out=mire;
        changed=true;
    }
}
